import http from './http.js';
import custom from './custom.js';
const version = '3.9.11';

let apis={
	http:http,
	version:version,
	
	/**
	 * 登录
	 * @param {Object} data
	 */
	login(data) {
		http.request.post('login', data, function(result) {
			uni.setStorage({
				key: 'x-api-token',
				data: result.data.token,
				success: function() {
					custom.tool.jump(2, 'main/index');
				},
				fail() {
					try {
						uni.setStorageSync('x-api-token', result.data.token);
					} catch (e) {
						console.log('token储存失败')
					}
				}
			});
		}, '登录失败');
	},

	/**
	 * 退出登录
	 */
	outlogin() {
		http.requests.post('outlogin', {}, function(result) {}, '', false);
		setTimeout(function() {
			custom.tool.clearToken();
			custom.tool.jump(2, 'user/login');
		}, 400);
	},
	
	getInfo(callback){
		http.requests('game/user.info', {}, function(result){
			callback(result)
		},'POST');
	},
	


	
	/**
	 * 获取版本检查更新
	 * @param {Boolean} type true手动触发,false自动
	 */
	getVersion(type) {
		let that=this;
		type = typeof type == "boolean" ? type : false;
		// http.requests('getVersion', {}, function(result) {
		// 	if (result.data.version <= version) {
		// 		if (type) {
		// 			custom.tool.showToast('已是最新版本');
		// 		}
  //               return false;
		// 	}
		// 	//如果手动触发检查更新则直接提示更新
		// 	if (type) {
		// 		that.msgUpdate(result);
		// 		return false;
		// 	}
			//如果是自动触发则查看用户是否跳过了更新
			uni.getStorage({
				key: 'versionUpdate',
				success: function(res) {
					if (res.data >= result.data.edition.versionCode) {
						return false;
					}
					that.msgUpdate(result);
				},
				fail: function() {
                    if (result.data.version <= version) {
                        custom.tool.showToast('已是最新版本');
                        return false;
                    }
					that.msgUpdate(result);
				}
			});

		// }, 'GET');
	},

	/**
	 * 提示更新
	 * @param {Object} result
	 */
	msgUpdate(result) {
		let that=this;
		//提示更新
		uni.showModal({
			title: "发现新版本",
			content: result.data.content,
			confirmText: '更新',
			cancelText: '取消',
			confirmColor: '#0BCCED',
			success: (res) => {
				//当用户确定更新，执行更新
				if (res.confirm) {
					that.updateApp(result.data.wget);
				} else if (res.cancel) {
					//缓存用户的选择
					/*uni.setStorage({
						key: 'versionUpdate',
						data: result.data.version,
						success: function() {}
					});*/
					custom.tool.showToast('已取消更新,可在设置中手动检查更新');
				}
			}
		});
	},


	/**
	 * 执行更新
	 * @param {Object} wget app下载地址
	 */
	updateApp(wget) {
		uni.showLoading({
			title: '更新中……',
            mask:true
		});

	 	let dtask = plus.downloader.createDownload(wget, {}, function(d, status) {
				uni.hideLoading();
				//d为下载的文件对象
				if (status == 200) {
					//下载成功,d.filename是文件在保存在本地的相对路径，使用下面的API可转为平台绝对路径
					let fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename);
					uni.showModal({
						title: '',
						content: '更新成功，确定现在重启吗？',
						confirmText: '重启',
						confirmColor: '#EE8F57',
						success: function(res) {
							if (res.confirm) {
								//执行安装
								plus.runtime.install(
									fileSaveUrl, {
										force: true
									},
									function() {
										custom.tool.showToast('更新成功，正在重启', true, 1800);
										plus.runtime.restart();
									},
									function(e) {
										custom.tool.showToast('更新失败');
									}
								);
							}
						}
					});
					// plus.runtime.openFile(d.filename); //选择软件打开文件
				} else {
					//下载失败
					plus.downloader.clear(); //清除下载任务
				}
			})
	/*	dtask.start();
		const downloadTask = uni.downloadFile({
		    url: wget,
		    success: (res) => {
		        if (res.statusCode === 200) {
		            uni.showModal({
		            	title: '',
		            	content: '更新成功，确定现在重启吗？',
		            	confirmText: '重启',
		            	confirmColor: '#EE8F57',
		            	success: function(res2) {
		            		if (res2.confirm) {
		            			//执行安装
		            			plus.runtime.install(
		            				res.tempFilePath, {
		            					force: true
		            				},
		            				function() {
		            					custom.tool.showToast('更新成功，正在重启', true, 1800);
		            					plus.runtime.restart();
		            				},
		            				function(e) {
		            					custom.tool.showToast('更新失败');
		            				}
		            			);
		            		}
		            	}
		            });
		        }
		    },
			complete: () => {
				uni.hideLoading();
			}
		});*/

        dtask.start();
        var prg = 0;
        var showLoading = plus.nativeUI.showWaiting("正在下载");
        dtask.addEventListener('statechanged', function(task, status) {//添加下载任务事件监听器
            // 给下载任务设置一个监听 并根据状态 做操作
            switch (task.state) {
                case 1:
                    showLoading.setTitle("正在下载");
                    break;
                case 2:
                    showLoading.setTitle("已连接到服务器");
                    break;
                case 3:
                    uni.hideLoading();
                    prg = parseInt(//下载的进度
                        (parseFloat(task.downloadedSize) / parseFloat(task.totalSize)) * 100
                    );
                    showLoading.setTitle("正在下载" + prg + "% ");
                    break;
                case 4:
                    plus.nativeUI.closeWaiting();//关闭系统提示框
                    //下载完成
                    break;
            }
        });




      /*  downloadTask.onProgressUpdate((res) => {
            console.log('下载进度' + res.progress);
            console.log('已经下载的数据长度' + res.totalBytesWritten);
            console.log('预期需要下载的数据总长度' + res.totalBytesExpectedToWrite);

            // 满足测试条件，取消下载任务。
            if (res.progress > 50) {
                downloadTask.abort();
            }
        });*/
	},
 	checRegexp(e,str) {
		var reg = new RegExp(e);
		if (reg.test(str)) {
			return true
		} else {
			return false
		}
	},
};
export default apis;